/*
  奶牛晒衣服
  题目描述
    奶牛妈妈决定给每个牛宝宝都穿上可爱的婴儿装。
    但是由于衣服很湿，为牛宝宝晒衣服就成了很不爽的事情。于是，奶牛妈妈请你帮助她完成这个重任。

    一件衣服在自然条件下用一秒的时间可以晒干 a 点湿度。
    抠门的奶牛妈妈只买了一台烘衣机。
    使用一秒烘衣机可以让一件衣服额外烘干 b 点湿度（一秒晒干 a + b 湿度），
    但在同一时间内只能烘一件衣服。现在有 n 件衣服，第 i 件衣服的湿度为 wi（保证互不相同），
    要你求出弄干所有衣服的最少时间（湿度为 0 为干 ）。
  输入格式
    第一行三个整数，分别为 n, a, b。
    第二行 n 个整数，代表 wi
      1 ≤ wi, a, b ≤ 5 × 10^5
  输出格式
    弄干所有衣服的最少时间。
  输入数据 1
    3 2 1
    1
    2
    3
  输出数据 1
    1
*/

#include <bits/stdc++.h>

using namespace std;

/*
  思路:
    通常采用二分答案算法的话, 需要首先明确 2 个核心问题:
      1) 答案的取值范围(区间)，即确定区间的最大值和最小值
      2) 判断某个答案是否满足题意(条件)的判定方法
    解答本题时，先明确出这 2 个问题:
      1）答案的取值范围(区间)
          区间的最小值: 对 n 件衣服中湿度最小的衣服，同时进行"晒干 + 烘干"处理，需要的时间(以整数为单位);
          区间的最大值: 对 n 件衣服中湿度最大的衣服，晒干需要的时间(以整数为单位);
      2) 判断某个答案是否满足题意的判定方法:
          遍历每件衣服，如果其晒干需要的时间大于 x(答案)，则计算其除了晒以外，还需要烘的时间，对烘的时间进行累加统计，并放到变量 sum 中；
          如果累加值 sum 小于等于 x，则该答案满足题目要求；
          否则，答案不能满足题目要求。
*/

long long n, a, b;
long a1[500002] = {}; // a[i] 表示发起第 i 件衣服的湿度 (其中 i > 0)
long s = LLONG_MAX, e = 0;  // s(start) 表示二分答案算法实现中进行二分查找时的开始边界(左边界)
                            // e(end)   表示二分答案算法实现中进行二分查找时的结束边界(右边界)

// 该函数用来判断输入 x(表示答案，即弄干所有衣服需要用的时间) 是否满足条件(题目要求)
bool check(long long x) {
    long long ans = 0; // 使用烘衣机烘的时间之和

    // 遍历每件衣服，如果其晒干需要的时间大于 x(答案)，
    // 则计算其除了晒以外，还需要烘的时间，对烘的时间进行累加统计，并放到变量 sum 中；
    // 如果累加值 sum 小于等于 x，则该答案满足题目要求；
    // 否则，答案不能满足题目要求。
    for (int i = 1; i <= n; i++) {
        if (a1[i] - x * a > 0) {
            if ((a1[i] - x * a) / b == 0) {    // 特别注意：使用烘干机的时间以整数为单位
                ans += 1;
            } else {
                ans += (a1[i] - x *a ) / b;
                int sum = (a1[i] - x * a) % b; // 特别注意: 使用烘干机的时间以整数为单位
                if (sum > 0) {
                    ans++;
                }
            }
        }
    }
    return ans <= x;
}

int main() {
    cin >> n >> a >> b;
    for (int i = 1; i <= n; i++) {
        cin >> a1[i];
        if (a1[i] > e) {
            e = a1[i];
        }
        if (a1[i] < s) {
            s = a1[i];
        }
    }

    // 答案区间的最大值: 对 n 件衣服中湿度最大的衣服，晒干需要的时间(以整数为单位);
    if (e % a != 0) {  // 特别注意：使用烘干机的时间以整数为单位, 要考虑 % a 不等于 0 的情况
        e = e / a + 1;
    } else {
        e = e / a;
    }

    // 答案区间的最小值: 对 n 件衣服中湿度最小的衣服，同时进行"晒干 + 烘干"处理，需要的时间(以整数为单位);
    s = s / (a + b);   // 特别注意: 区间的最小值和最大值的处理不同，最小值要尽可能小，不需要额外考虑余数不等于 0 的情况

    /*
      用二分查找法，在答案的区间范围内，查找满足题目要求的最小值
      注意:
        特别技巧: 我们在编码时，要保证区间的最大值 e 一定大于等于 区间的最小值 s
                 这样就可以保证一定会进行一次循环处理!
    */
    long long ans = 0;
    while (s <= e) {
        long long mid = (s + e) / 2;
        if (check(mid)) {
            ans = mid;
            e = mid - 1; // 由于需要答案尽可能地小，所以我们进一步从 mid 的左半区间进行查找
        } else {
            s = mid + 1; // mid 不满足题目要求，从 mid 的右半区间进行查找
        }
    }
    cout << ans;

    return 0;
}